package com.ccf.business.knowledge.service;

import com.ccf.business.knowledge.model.vo.LabelDataVO;
import com.ccf.business.knowledge.model.vo.LabelTaskVO;
import com.ccf.business.knowledge.model.LabelData;
import com.common.model.result.PageResult;
import com.common.model.pojo.Query;
import com.service.mybatis.service.ISuperService;
import com.service.websocket.to.User;

import javax.validation.constraints.NotNull;


/**
 * 标注记录
 *
 * @author ccf
 * @date 2022-02-15 16:56:10
 */
public interface ILabelDataService extends ISuperService<LabelData> {
    /**
     * 列表
     * @param query
     * @return
     */
    PageResult<LabelData> findList(Query query);

    /**
     * 查询详情
     * @param id
     * @return
     */
    LabelDataVO detail(String id);

    /**
     * 提交
     * @param labelData
     */
    void submit(LabelDataVO labelData);

    /**
     * 撤回
     * @param labelData
     */
    void recall(LabelData labelData);

    /**
     * 审核
     * @param labelData
     */
    void audit(LabelDataVO labelData);

    /**
     * 下一篇
     * @param id
     * @return
     */
    String next(String id, Integer status);

    /**
     * 添加时保存数据
     * @param labelTask
     * @param files
     * @param users
     * @param isUpdate
     */
    void saveDatas(LabelTaskVO labelTask, String[] files, String[] users, boolean isUpdate);

    /**
     * 标注列表
     * @param query
     * @return
     */
    PageResult labelList(Query query);

    /**
     * 检查id 是否被占用
     * @param id
     * @return
     */
    User checkLocks(String id);
    /**
     * 用于返回占用对象
     * @param id
     * @return
     */
    User getLocksById(String id);

    /**
     * 保存
     * @param labelData
     * @param status
     * @return
     */
    LabelData saveAndLabel(LabelDataVO labelData, @NotNull Integer status);

    /**
     * 审核全部通过
     * @param labelData
     */
    void auditAll(LabelDataVO labelData);
}

